package com.es.designmode.iterator;

/**
 * 迭代器模式
 * 提供一种方法顺序访问一个聚合对象中的各个元素，而又不暴露该对象的内部表示
 * <p>
 * 本例中，即将 List隐藏，拥有迭代接口同样的效果
 * 即编程语言中的迭代
 *
 * @author Will
 */
public class ClientSide {
    public static void main(String[] args) {

        ConcreteAggregate a = new ConcreteAggregate();

        a.addItem("测试1");
        a.addItem("测试2");
        a.addItem("测试3");
        a.addItem("测试4");
        a.addItem("测试5");
        a.addItem("测试6");
        a.addItem("测试7");

        Iterator i = new ConcreteIterator(a);
        Object item = i.first();

        while (!i.isDone()) {
            System.out.println("遍历数据：" + i.currentItem());
            i.next();
        }
    }
}
